        var fileNameArray = new Array();
        var audioArray = new Array();
        var fileSuffixForLRMode = "";
        var fileExt = ".mp3";
        function play(soundFile) {

            var bCal = 0;
            if (soundFile.indexOf("calib") >= 0) bCal = 1;

            var i = fileNameArray.indexOf(soundFile);
            var clicked = document.getElementById(soundFile);

            if (!bCal) clearLast(soundFile);

            clicked.style.opacity = 1;

            for (var k = 0; k < audioArray.length; k++) {
                if (k != i && !isNaN(audioArray[k].duration)) {
                    audioArray[k].pause();
                    audioArray[k].currentTime = 0;
                }
            }

            // play clicked
            if (i == -1) { // never played before
                clicked.className = 'audioButtonIsLoading';
                clicked.onclick = '';
                fileNameArray.push(soundFile);
                i = fileNameArray.indexOf(soundFile);
                audioArray[i] = new Audio('/audiogram/tones/' + soundFile + fileSuffixForLRMode + fileExt);
                if (bCal) audioArray[i].onplay = function () {
                    clicked.className = 'calibButtonIsPlaying';
                    clicked.onclick = function () {
                        play(this.id);
                    };
                }; else audioArray[i].onplay = function () {
                    clicked.className = 'audioButtonIsPlaying';
                    clicked.onclick = function () {
                        play(this.id);
                    };
                };
                if (bCal) audioArray[i].onpause = function () {
                    clicked.className = 'calibButton'
                }; else audioArray[i].onpause = function () {
                    clicked.className = 'audioButton'
                };
                if (bCal) audioArray[i].onended = function () {
                    clicked.className = 'calibButton'
                }; else audioArray[i].onended = function () {
                    clicked.className = 'audioButton'
                };
                audioArray[i].loop = 0;
                audioArray[i].volume = 1;
                audioArray[i].play();
            } else { // has played or is playing.. or was loading
                if (audioArray[i].readyState == 0) {
                    if (bCal) clicked.className = "calibButtonIsLoading"; else clicked.className = "audioButtonIsLoading";
                } else {
                    if (bCal) audioArray[i].onplay = function () {
                        clicked.className = 'calibButtonIsPlaying';
                        clicked.onclick = function () {
                            play(this.id);
                        };
                    }; else audioArray[i].onplay = function () {
                        clicked.className = 'audioButtonIsPlaying';
                        clicked.onclick = function () {
                            play(this.id);
                        };
                    };
                    if (audioArray[i].paused) audioArray[i].play();
                    else audioArray[i].pause();
                }
            }

            if (!bCal) updateResultMatrix(soundFile);

        }
    